﻿//начало текста модуля

///////////////////////////////////////////////////
//Служебная часть
///////////////////////////////////////////////////


// контекст фреймворка Vanessa-Behavior
Перем Ванесса;
 


// Служебная функция.
Функция ДобавитьШагВМассивТестов(МассивТестов,Снипет,ИмяПроцедуры,ПредставлениеТеста = Неопределено,Транзакция = Неопределено,Параметр = Неопределено)
	Структура = Новый Структура;
	Структура.Вставить("Снипет",Снипет);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ПредставлениеТеста",ПредставлениеТеста);
	Структура.Вставить("Транзакция",Транзакция);
	Структура.Вставить("Параметр",Параметр);
	МассивТестов.Добавить(Структура);
КонецФункции


// Функция экспортирует список шагов, которые реализованы в данной внешней обработке.
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
	Ванесса = КонтекстФреймворкаBDD;
	
	ВсеТесты = Новый Массив;

	//описание параметров
	//ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,Транзакция,Параметр);

	ДобавитьШагВМассивТестов(ВсеТесты,"ЯСоздаюFixturesПоМакету(Парам01)","ЯСоздаюFixturesПоМакету","И     Я создаю fixtures по макету ""Макет1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеОтсутствуетПользовательИБ(Парам01)","ВБазеОтсутствуетПользовательИБ","Когда В базе отсутствует пользователь ИБ ""ТестовыйПользователь""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеСуществуетПользовательИБ(Парам01)","ВБазеСуществуетПользовательИБ","Тогда В базе существует пользователь ИБ ""ТестовыйПользователь""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯУдаляюПользователяИБ(Парам01)","ЯУдаляюПользователяИБ","И Я удаляю пользователя ИБ ""ТестовыйПользователь""");

	Возврат ВсеТесты;
КонецФункции
	

// Служебная функция.
Функция ПолучитьМакетСервер(ИмяМакета)
	Возврат ПолучитьМакет(ИмяМакета);
КонецФункции
	

// Служебная функция для подключения библиотеки создания fixtures.
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
	Возврат ПолучитьМакетСервер(ИмяМакета);
КонецФункции



///////////////////////////////////////////////////
//Работа со сценариями
///////////////////////////////////////////////////


// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
	
КонецПроцедуры


// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
	
КонецПроцедуры



///////////////////////////////////////////////////
//Реализация шагов
///////////////////////////////////////////////////

Функция ПользовательСуществует(ИмяПользователя)
	Возврат ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя) <> Неопределено;	
КонецФункции

//И     Я создаю fixtures по макету "Макет1"
//@ЯСоздаюFixturesПоМакету(Парам01)
Процедура ЯСоздаюFixturesПоМакету(ИмяМакета) Экспорт
	//Ванесса.ПосмотретьЗначение(Ванесса);
	
	Макет           = Ванесса.ПолучитьФорму("Форма").ОбработкаСвязаннаяСИсполняемойФичей.ПолучитьМакетОбработки(ИмяМакета);
	СтруктураДанных = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет);
	Ванесса.ПроверитьНеРавенство(СтруктураДанных,Неопределено,"Получили структуру данных.");
КонецПроцедуры

//Когда В базе отсутствует пользователь ИБ "ТестовыйПользователь"
//@ВБазеОтсутствуетПользовательИБ(Парам01)
Процедура ВБазеОтсутствуетПользовательИБ(ИмяПользователя) Экспорт
	//Ванесса.ПосмотретьЗначение(Парам01,Истина);
	ДопСообщениеОшибки = "Ожидали, что пользователь " + ИмяПользователя + " отсутствует в базе";
	Ванесса.ПроверитьЛожь(ПользовательСуществует(ИмяПользователя), ДопСообщениеОшибки);
КонецПроцедуры

//Тогда В базе существует пользователь ИБ "ТестовыйПользователь"
//@ВБазеСуществуетПользовательИБ(Парам01)
Процедура ВБазеСуществуетПользовательИБ(ИмяПользователя) Экспорт
	//Ванесса.ПосмотретьЗначение(Парам01,Истина);
	ДопСообщениеОшибки = "Ожидали, что пользователь " + ИмяПользователя + " существует в базе";
	Ванесса.ПроверитьИстину(ПользовательСуществует(ИмяПользователя), ДопСообщениеОшибки);
КонецПроцедуры

//И Я удаляю пользователя ИБ "ТестовыйПользователь"
//@ЯУдаляюПользователяИБ(Парам01)
Процедура ЯУдаляюПользователяИБ(ИмяПользователя) Экспорт
	//Ванесса.ПосмотретьЗначение(Парам01,Истина);
	ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
	ПользовательИБ.Удалить();
КонецПроцедуры

//окончание текста модуля  